package com.example.anew.journey.mynewjourney.base;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.anew.journey.mynewjourney.R;
import com.example.anew.journey.mynewjourney.utils.AntiShake;
import com.example.anew.journey.mynewjourney.utils.Utils;
import com.umeng.analytics.MobclickAgent;

/**
 * 杭州惟君医疗科技有限公司13
 * Created by 20433 on 2018/3/15
 */

public abstract class FirstChangeBaseActivity extends AppCompatActivity {

    private ImageView toolbar_iv_return;
    private TextView toolbar_tv_name;
    private TextView toolbar_tv_titles;
    private Button toolbar_bt_release;
    private ImageView toolbar_iv_shared;
    public AntiShake util;
    private FrameLayout flayout;
    private View view;
    private Toolbar toolbar;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_change_base);
        findFirstChangeBaseView();
        Utils.setStatusBar(this, false, false);
        Utils.setStatusTextColor(false, this);
        // 防抖动工具类
        util = new AntiShake();
        view =  setMainContentView();
        flayout.addView(view);
        initView(view);
    }



    private void findFirstChangeBaseView() {
        toolbar_iv_return = (ImageView) findViewById(R.id.first_change_base_custom_toolbar_iv_return);
        toolbar_tv_name = (TextView) findViewById(R.id.first_change_base_custom_toolbar_tv_name);
        toolbar_tv_titles = (TextView) findViewById(R.id.first_change_base_custom_toolbar_tv_titles);
        toolbar_bt_release = (Button) findViewById(R.id.first_change_base_custom_toolbar_bt_release);
        toolbar_iv_shared = (ImageView) findViewById(R.id.first_change_base_custom_toolbar_iv_shared);
        toolbar = (Toolbar) findViewById(R.id.first_change_base_custom_toolbar_toolbar);
        flayout = (FrameLayout) findViewById(R.id.activity_first_change_base_flayout);

        toolbar_iv_return.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               // if (util.check()) return;
                onClickReturn();
            }
        });
        toolbar_bt_release.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               // if (util.check()) return;
                onClickRelease();
            }
        });
        toolbar_iv_shared.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               // if (util.check()) return;
                onClickShared();
            }
        });
    }


    // TODO 界面可见  初始化工作方这里也行
    @Override
    protected void onStart() {
        super.onStart();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(connectionReceiver, intentFilter);
        refreshVariable();
    }

    // TODO 获取焦点
    @Override
    protected void onResume() {
        super.onResume();
        MobclickAgent.onResume(this);
        changeInterface();

    }

    protected  void changeInterface(){

    }

    // TODO 失去焦点  可以进行一些轻量级的存储数据和去初始化工作
    @Override
    protected void onPause() {
        super.onPause();
        MobclickAgent.onPause(this);
        DataStored();
    }

    // TODO 界面不可见 做资源回收工作
    @Override
    protected void onStop() {
        super.onStop();
        if (connectionReceiver != null) {
            unregisterReceiver(connectionReceiver);
        }
        solutionRegister();
    }

    // TODO 重新开始 Activity 可见 这里一般不做什么操作
    @Override
    protected void onRestart() {
        super.onRestart();
    }

    // TODO 界面不可见 Activity 销毁 这个方法用来释放资源以及回收工作
    @Override
    protected void onDestroy() {
        super.onDestroy();
        releaseResources();
    }
    private BroadcastReceiver connectionReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
            NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
                // todo 弹出提示框提示用户没有网络了 unconnect network
                promptNoInternet();
            } else {
                // todo 提示用户有网络了  connect network
                promptHaveInternet();
            }
        }
    };
    // todo onCreate()里面抽取的方法
    /**
     * @desc 主要内容的布局资源填充进来
     * */
    protected abstract View setMainContentView();
    /**
     * @desc 初始化数据 onCreate()
     * */
    protected abstract void initView(View view);
    // todo activity 生命周期里面的方法
    /**
     * @desc 界面可见  刷新变量  注册
     */
    protected abstract void refreshVariable();
    /**
     * @desc 界面可见  失去焦点  存储数据
     */
    protected abstract void DataStored();
    /**
     * @desc 界面不可见 解注册 资源回收
     */
    protected abstract void solutionRegister();

    /**
     * @desc Activity 销毁 释放资源
     */
    protected abstract void releaseResources();
    // todo 网络监听
    /**
     * @desc 网络监听 用于提示用户有网络了
     */
    protected abstract void promptHaveInternet();

    /**
     * @desc 网络监听 用于提示用户没有网络了
     */
    protected abstract void promptNoInternet();

    // todo  toolbar自定义点击事件
    /**
     * @desc 点击分享按钮
     * */
    protected abstract void onClickShared();

    /**
     * @desc 点击发布按钮
     * */
    protected abstract void onClickRelease();

    /**
     * @desc 点击返回按钮
     * */
    protected abstract void onClickReturn();
    // todo toolbar自定义view 各控件的显示
    /**
     * @desc 显示返回按钮
     * */
    protected void displayReturn(){
        toolbar_iv_return.setVisibility(View.VISIBLE);
    }
    // 显示页面返回按钮右边的文本
    protected  void displayTvName(){
        toolbar_tv_name.setVisibility(View.VISIBLE);
    }
    //显示中间标题
    protected  void displayTitle(){
        toolbar_tv_titles.setVisibility(View.VISIBLE);
    }
    /**
     * @desc 显示发布按钮
     * */
    protected void displayBtRelease(){
        toolbar_bt_release.setVisibility(View.VISIBLE);

    }
    // 显示分享
    protected void displayIvShared(){
        toolbar_iv_shared.setVisibility(View.VISIBLE);
    }
    /**
     * @desc 隐藏Toolbar
     * */
    protected  void  displayToolbar(){
        toolbar.setVisibility(View.VISIBLE);
    }


    // todo toolbar自定义view 各控件的属性设置
    /**
     * @desc 设置返回按钮图片的资源
     * @param resId  图片的资源
     * */
    protected  void setReturnrePictuResources(int resId){
        toolbar_iv_return.setImageResource(resId);
    }
    /**
     * 返回按钮右边的文本属性设置
     * @param size  文本大小
     * @param color 文本颜色
     * @param text  文本内容
     * */
    protected  void setTvNameEachAttribute(int size,int color,String text){
        toolbar_tv_name.setText(text);
        toolbar_tv_name.setTextSize(size);
        toolbar_tv_name.setTextColor(color);
    }

    /**
     *中间标题属性设置
     * @param size  中间标题大小
     * @param color 中间标题颜色
     * @param text  中间标题内容
     * */
    protected  void setTvTitlesEachAttribute(int size,int color,String text){
        toolbar_tv_titles.setText(text);
        toolbar_tv_titles.setTextSize(size);
        toolbar_tv_titles.setTextColor(color);
    }
    /**
     *发布按钮属性设置
     * @param size  发布按钮字体大小
     * @param textcolor 发布按钮字体颜色
     * @param text  发布按钮内容
     * @param bgcolor  发布按钮背景颜色
     * */
    protected  void setBtReleaseEachAttribute(int size,int textcolor,String text,int bgcolor){
        toolbar_bt_release.setText(text);
        toolbar_bt_release.setTextSize(size);
        toolbar_bt_release.setTextColor(textcolor);
        toolbar_bt_release.setBackgroundColor(bgcolor);


    }


    /**
     * @desc 分享图片的资源
     * @param resId  分享图片的资源
     * */
    protected  void setIvSharedPictuResources(int resId){
        toolbar_iv_shared.setImageResource(resId);
    }
    protected void setToolbarBg(int color){
        toolbar.setBackgroundColor(color);
    }

}
